package com.whnk.rtms.service.impl;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.whnk.common.support.Convert;
import com.whnk.common.utils.DateUtils;
import com.whnk.common.utils.bean.BeanUtils;
import com.whnk.rtms.domain.VrsnAncCfgMgt;
import com.whnk.rtms.domain.VrsnAncCfgMgtVo;
import com.whnk.rtms.mapper.VrsnAncCfgMgtMapper;
import com.whnk.rtms.service.IVrsnAncCfgMgtService;
import com.whnk.system.mapper.SequenceMapper;

/**
 * 版本发布配置管理 服务层实现
 * 
 * @author whwhnk
 * @date 2019-03-29
 */
@Service
public class VrsnAncCfgMgtServiceImpl implements IVrsnAncCfgMgtService 
{
	@Autowired
	private VrsnAncCfgMgtMapper vrsnAncCfgMgtMapper;
	
	@Autowired
	private SequenceMapper sequenceMapper;

	/**
     * 查询版本发布配置管理信息
     * 
     * @param lgcPk 版本发布配置管理ID
     * @return 版本发布配置管理信息
     */
    @Override
	public VrsnAncCfgMgtVo selectVrsnAncCfgMgtById(String lgcPk)
	{
    	VrsnAncCfgMgt ancCfgMgt = vrsnAncCfgMgtMapper.selectVrsnAncCfgMgtById(lgcPk);
    	VrsnAncCfgMgtVo ancCfgMgtVo = new VrsnAncCfgMgtVo();
		BeanUtils.copyBeanProp(ancCfgMgtVo, ancCfgMgt);
		if (ancCfgMgtVo.getPubSttm() != null) {
			ancCfgMgtVo.setStrPubSttm(DateUtils.parseDateToStr("yyyy-MM-dd", ancCfgMgtVo.getPubSttm()));
		}
		if (ancCfgMgtVo.getPubEdtm() != null) {
			ancCfgMgtVo.setStrPubEdtm(DateUtils.parseDateToStr("yyyy-MM-dd", ancCfgMgtVo.getPubEdtm()));
		}
		
	    return ancCfgMgtVo;
	}
	
	/**
     * 查询版本发布配置管理列表
     * 
     * @param ancCfgMgt 版本发布配置管理信息
     * @return 版本发布配置管理集合
     */
	@Override
	public List<VrsnAncCfgMgtVo> selectVrsnAncCfgMgtList(VrsnAncCfgMgt ancCfgMgt)
	{
		List<VrsnAncCfgMgt> ancCfgMgts = vrsnAncCfgMgtMapper.selectVrsnAncCfgMgtList(ancCfgMgt);
		List<VrsnAncCfgMgtVo> ancCfgMgtVos = new ArrayList<VrsnAncCfgMgtVo>();
		if (ancCfgMgts != null && !ancCfgMgts.isEmpty()) {
			VrsnAncCfgMgtVo vo = null;
			for (VrsnAncCfgMgt po : ancCfgMgts) {
				vo = new VrsnAncCfgMgtVo();
				BeanUtils.copyBeanProp(vo, po);
				if (vo.getPubSttm() != null) {
					vo.setStrPubSttm(DateUtils.parseDateToStr("yyyy-MM-dd", vo.getPubSttm()));
				}
				if (vo.getPubEdtm() != null) {
					vo.setStrPubEdtm(DateUtils.parseDateToStr("yyyy-MM-dd", vo.getPubEdtm()));
				}
				ancCfgMgtVos.add(vo);
			}
		}
	    return ancCfgMgtVos;
	}
	
    /**
     * 新增版本发布配置管理
     * 
     * @param ancCfgMgtVo 版本发布配置管理信息
     * @return 结果
     */
	@Override
	public int insertVrsnAncCfgMgt(VrsnAncCfgMgtVo ancCfgMgtVo)
	{
		// 获取序列值
		String seqVal = sequenceMapper.getSeqNextVal("seq_vrsn_anc_cfg_mgt");
		// 逻辑主键编号规则：14位当前日期+4位序号
		String lgcPk = DateUtils.dateTimeNow() + new DecimalFormat("0000").format(Long.valueOf(seqVal));
		ancCfgMgtVo.setLgcPk(lgcPk);
		
		if (StringUtils.isNotBlank(ancCfgMgtVo.getStrPubSttm())) {
			ancCfgMgtVo.setPubSttm(DateUtils.strToSqlDate("yyyy-MM-dd", ancCfgMgtVo.getStrPubSttm()));
		}
		if (StringUtils.isNotBlank(ancCfgMgtVo.getStrPubEdtm())) {
			ancCfgMgtVo.setPubEdtm(DateUtils.strToSqlDate("yyyy-MM-dd", ancCfgMgtVo.getStrPubEdtm()));
		}
		
		ancCfgMgtVo.setLastUdtDtTm(new Date());
		
	    return vrsnAncCfgMgtMapper.insertVrsnAncCfgMgt(ancCfgMgtVo);
	}
	
	/**
     * 修改版本发布配置管理
     * 
     * @param ancCfgMgt 版本发布配置管理信息
     * @return 结果
     */
	@Override
	public int updateVrsnAncCfgMgt(VrsnAncCfgMgtVo ancCfgMgtVo)
	{
		if (StringUtils.isNotBlank(ancCfgMgtVo.getStrPubSttm())) {
			ancCfgMgtVo.setPubSttm(DateUtils.strToSqlDate("yyyy-MM-dd", ancCfgMgtVo.getStrPubSttm()));
		}
		if (StringUtils.isNotBlank(ancCfgMgtVo.getStrPubEdtm())) {
			ancCfgMgtVo.setPubEdtm(DateUtils.strToSqlDate("yyyy-MM-dd", ancCfgMgtVo.getStrPubEdtm()));
		}
		ancCfgMgtVo.setLastUdtDtTm(new Date());
	    return vrsnAncCfgMgtMapper.updateVrsnAncCfgMgt(ancCfgMgtVo);
	}

	/**
     * 删除版本发布配置管理对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	@Override
	public int deleteVrsnAncCfgMgtByIds(String ids)
	{
		return vrsnAncCfgMgtMapper.deleteVrsnAncCfgMgtByIds(Convert.toStrArray(ids));
	}
	
}
